草庐IT

SQLite 和并发

全部标签

c# - 为什么这个 web api Controller 不是并发的?

我有一个WebAPIController,其中包含以下方法:publicstringTester(){Thread.Sleep(2000);return"OK";}当我调用它10次(使用Fiddler)时,我预计所有10次调用都会在大约2秒后返回。然而,调用分别在2、4、8...20秒后返回。是什么阻止它同时运行?我该如何解决?常规Controller的行为是否与web-apiController相同? 最佳答案 您描述的内容与ASP.NETsession状态的默认行为相匹配,可以通过在web.config中禁用它来解决。Acces

c# - 一个只允许N个并发线程的函数

我有一个VisualStudio2008C#.NET3.5项目,其中一个类监听来自另一个多线程类的事件调用。我需要确保我的事件最多只允许同时访问10个线程。第11个线程应该阻塞,直到10个线程中的一个完成。myobj.SomeEvent+=OnSomeEvent;privatevoidOnSomeEvent(objectsender,MyEventArgsargs){//allowupto10threadssimultaneousaccess.Blockthe11ththread.using(SomeThreadLocklock=newSomeThreadLock(10)){DoUse

c# - EntityFramework 核心单元测试 - SQLite 内存模式与 InMemory 提供程序

我正在为使用EntityFrameworkCore并根据docs的项目编写单元测试。我可以使用SQLite内存模式或TheInMemoryprovider来近似数据库上下文。文档指出SQLite内存模式的行为类似于关系数据库,InMemory提供程序的行为并不总是像关系数据库。据我所知,SQLite模式听起来更好,因为它的行为类似于关系数据库,而InMemory提供程序则不然,但我想还有其他方面需要考虑,否则没有人会使用InMemory提供程序听起来更糟。在选择使用哪种工具之前,我应该考虑每种方法的其他优缺点吗? 最佳答案 如果您的

c# - 使用 RazorEngine 并发解析 Razor 模板

我在MVC3网络应用程序中使用RazorEngine库(http://razorengine.codeplex.com/)来使用Razor模板语言解析字符串(不是View)。一般来说,这工作正常。但是,当多个用户同时访问解析Razor模板的代码时,我偶尔会看到看起来像是在内部Razor编译器中发生的错误(请参阅下面的两个错误)。我在解释这些错误时遇到了问题,但我的猜测是我调用Razor编译器的方式不是并发安全的。这是Razor编译器的已知问题吗?普通RazorView(.cshtml)怎么不会遇到这个问题?有没有比将我的应用程序对Razor.Parse的所有调用包装在互斥锁中更好的解决

C# SQLite-net 定义多列唯一

我看到了对SQLite-net中支持多列唯一约束的更改的引用。我知道它可以直接用sqlite完成,但是我更喜欢使用sqlite-net方法来做事。什么是做多列唯一的语法。Single是希望唯一的列上方的[Unique]。 最佳答案 我通过查看项目中包含的实际单元测试找到了答案。它基于在索引属性上使用命名参数。例如:[Indexed(Name="ListingID",Order=2,Unique=true)]publicstringListingNumber{get;set;}[Indexed(Name="ListingID",Ord

c# - 为什么我没有看到 IDisposable 实现并发的任何实现?

当我查看IDisposable的示例实现时,我没有发现任何线程安全的。为什么IDisposable没有实现线程安全?(相反,调用者有责任确保只有一个线程调用Dispose())。 最佳答案 在使用完对象之前,您不应该丢弃它。如果有其他线程引用该对象并且它们有可能想要调用它的方法,则您不应该处置它。因此Dispose不需要是线程安全的。 关于c#-为什么我没有看到IDisposable实现并发的任何实现?,我们在StackOverflow上找到一个类似的问题:

c# - 在不更新行版本的情况下检查实体的并发性

我有一个父实体,我需要做一个并发检查(如下注释)1682873666publicbyte[]RowVersion{get;set;}我有一堆客户端进程可以从这个父实体访问只读值,主要是更新它的子实体。约束客户端不应干扰彼此的工作(例如,更新子记录不应在父实体上引发并发异常)。我有一个服务器进程更新这个父实体,在这种情况下如果父实体已更改,则客户端进程需要抛出。注意:客户端的并发检查是牺牲性的,服务器的工作流是关键任务。问题我需要检查(从客户端进程)父实体是否已更改而不更新父实体的行版本。在EF中对父实体进行并发检查非常简单://Updatetherowversion'soriginal

c# - ServiceStack 是如何处理并发调用的?

ServiceStack是如何处理并发调用的?我在WCF中寻找等效的ConcurrencyMode.Multiple。我的WCF服务设置了这个属性:[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall,ConcurrencyMode=ConcurrencyMode.Multiple,UseSynchronizationContext=false)]我是否需要在ServiceStack中启用任何功能才能让它在每次调用时使用多个线程? 最佳答案 ServiceS

@Transactional 事务加了 锁 为什么还有并发问题?

一、原因分析Spring中通过在方法上添加注解@Transactional可以很好的处理事务问题。Spring对此的处理原理是对加了@Transactional注解的方法添加AOP切面来时先事务管理的。而synchronized最大范围也就是方法级别的。事务和synchronized关系如下所示由上图可以看出,当线程1释放了锁,还未提交事务之前,线程2已经获取锁并提前提交了事务,从而导致了并发的问题。二、解决方法1、方法一增强事务隔离级别可以把事务的隔离级别设置为SERIALIZABLE不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新、脏读、不可重复读、幻读,但是效率最低。@Tra

javascript - jQuery 限制并发 AJAX 请求的数量

所以我有一系列我想触发的AJAX事件,但我想将同时请求的数量限制为5,并将其余的排队。因此,例如,我有以下内容:$("div.server").each(function(){$.ajax(....);});所以类server可能有100个div,但我想在任何给定时间只运行5个请求。一个请求完成后,它应该继续下一个。执行此操作的最佳方法是什么? 最佳答案 最好的方法是让浏览器处理它。通常浏览器已经有每个主机的连接限制,所以如果连接太多,它们会自动排队。但是,我会考虑更改API,以便它从多个元素获取日期并返回多个元素的数据-即减少必要